table of contents
MKSWAP(8) | Podręcznik programisty linuksowego | MKSWAP(8) |
NAZWA¶
mkswap - skonfiguruj linuksowy obszar wymiany
SKŁADNIA¶
mkswap [-c] [-vN] [-f] [-p PSZ] urządzenie [rozmiar]
OPIS¶
mkswap konfiguruje linuksowy obszar wymiany na urządzeniu lub w pliku.
(Po utworzeniu obszaru wymiany musisz użyć polecenia swapon by go aktywować. Zwykle obszary wymiany są wymieniane w /etc/fstab, więc mogą być włączane do użytku podczas startu systemu poleceniem swapon -a w skrypcie startowym.)
Argument urządzenie zwykle jest partycją dyskową (coś w rodzaju /dev/hda4 lub /dev/sdb7) lecz może być również plikiem. Jądro Linuksa nie zważa na identyfikatory partycji, lecz wiele skryptów instalacyjnych zakłada, że partycje typu 82 (szesnastkowo -- LINUX_SWAP) są partycjami wymiany. (Uwaga: Solaris również używa tego typu. Uważaj by nie zabić swoich partycji solarisowych.)
Parametr rozmiar jest niepotrzebny, lecz zachowany dla zgodności wstecznej. (Określa on potrzebny rozmiar obszaru wymiany w 1024 blokach. mkswap w przypadku pominięcia tego parametru używa całej partycji lub całego pliku. Podawanie tego parametru jest niemądre -- literówka może zniszczyć dysk.)
Parametr PSZ określa rozmiar używanej strony. Podawanie go jest prawie zawsze niepotrzebne (nawet niemądre), lecz niektóre stare wersje libc kłamią o rozmiarze strony, więc mkswap może się pomylić. Symptomem jest to, że kolejne swapon nie powodzą się, gdyż nie znajdują sygnatury wymiany. Typowymi wartościami PSZ są 4096 lub 8192.
Linux zna przynajmniej dwa rodzaje obszarów wymiany: stary i nowy. Ostatnie 10 bajtów pierwszej strony obszaru wymiany służą do rozróżnienia: stary ma w sygnaturze `SWAP_SPACE', nowy `SWAPSPACE2'.
W starym rodzaju dalszym ciągiem pierwszej strony była mapa bitowa, z jednym bitem na każdą używalną stronę obszaru wymiany. Ponieważ pierwsza strona przechowuje mapę bitową, pierwszy bit jest zerowy. Ponadto ostatnie 10 bajtów przechowuje sygnaturę. Jeśli więc rozmiar strony wynosi S, to obszar wymiany starego rodzaju może opisać najwyżej 8*(S-10)-1 stron przydatnych do wymiany. Przy S=4096 (jak w i386), użytecznym obszarem jest najwyżej 133890048 bajtów (prawie 128 MiB), a reszta jest marnowana. Na alfie i sparc64 o S=8192, użytecznym obszarem jest najwyżej 535560992 bajtów (prawie 512 MiB).
Stara konfiguracja marnuje większość tej strony mapy bitowej, gdyż bity zerowe określają uszkodzone lub bloki poza końcem obszaru wymiany, choć do określenia rozmiaru obszaru wymiany wystarcza prosta liczba całkowita, a uszkodzone bloki można umieścić na liście. Nikt nie chce używać obszaru wymiany z setkami uszkodzonych bloków. (Nie chciałbym używać obszaru nawet z 1 uszkodzonym blokiem.) W nowym rodzaju obszaru wymiany zrobiono właśnie to. Maksymalny rozmiar obszaru wymiany zależy od architektury. Wynosi on 2GiB na i386, PPC, m68k, ARM, 1GiB na sparku, 512MiB na mipsie i 128GIB na alfie oraz 3TiB na sparc64.
Zauważ, że przed 2.1.117 jądro alokowało jeden bajt na każdą stronę, a obecnie alokuje dwa bajty, więc wzięcie obszaru wymiany 2GiB może wymagać 2MiB pamięci jądrowej.
Obecnie Linux zezwala na 8 obszarów wymiany. Używane obszary można zobaczyć w pliku /proc/swaps (od 2.1.25).
mkswap odmawia utworzenia obszarów mniejszych niż 10 stron.
Jeśli nie wiesz jakiego rozmiaru strony używa twoja maszyna, możesz to sprawdzić poleceniem `cat /proc/cpuinfo' (lub nie możesz -- zawartość tego pliku zależy od architektury i wersji jądra).
Aby skonfigurować plik wymiany należy utworzyć ten plik przed zainicjalizowaniem go poleceniem mkswap , np. używając polecenia w rodzaju
# dd if=/dev/zero of=swapfile bs=1024 count=65536
Zauważ, że plik wymiany nie może zawierać dziur (więc używanie do jego utworzenia cp(1) jest niedopuszczalne).
OPCJE¶
- -c
- Sprawdzenie urządzenia (jeśli jest blokowe) w poszukiwaniu uszkodzonych bloków przed utworzeniem obszaru wymiany. Jeśli jakieś zostaną znalezione, ich liczba zostaje wydrukowana.
- -f
- Wymuszenie działania nawet jeśli polecenie jest głupie. Umożliwia to tworzenie obszaru wymiany większego niż plik lub partycja, na których on się znajduje. Na SPARC wymuszenie tworzenia obszaru wymiany. Bez tej opcji mkswap odmówi tworzenia wymiany v0 na urządzeniu z prawidłowym superblokiem SPARC, gdyż oznacza to że ktoś ma zamiar wymazać tablicę partycji.
- -p PSZ
- Określenie rozmiaru używanej strony.
- -v0
- Utworzenie obszaru wymiany starego rodzaju.
- -v1
- Utworzenie obszaru wymiany nowego rodzaju.
Jeśli opcja -v nie jest podana, mkswap domyślnie użyje nowego rodzaju, lecz jeśli bieżące jądro jest starsze niż 2.1.117 (i również jeśli PAGE_SIZE jest mniejsze niż 2048), użyj starszego rodzaju. Nagłówek nowego rodzaju nie dotyka pierwszego bloku, więc może być preferowany w przypadku gdy masz tam LILO lub etykietę dysku. Jeśli musisz używać zarówno jądra 2.0 jak i 2.2, użyj -v0.
ZOBACZ TAKŻE¶
25 marca 1999 | Linux 2.2.4 |